package com.chenyue.cm.user.service;

import com.chenyue.cm.base.service.BaseServiceIface;
import com.chenyue.cm.user.domain.JdAppUser;
import com.chenyue.cm.user.domain.vo.LoginInfo;
import com.chenyue.cm.user.vo.CheckMobileUserVo;

import java.util.List;

/**
 * @author chenyue-cm
 */
public interface JdAppUserService extends BaseServiceIface<JdAppUser> {

    /**
     * 验证码核验
     *
     * @param mobile     手机号
     * @param verifyCode 验证码
     * @return 为空则成功 有值弹提示
     */
    String checkVerifyCode(String mobile, String verifyCode);

    /**
     * 密码登录APP
     *
     * @param mobile   手机号
     * @param password 密码
     * @param user     用户信息
     * @return 登录信息
     */
    LoginInfo pwdLogin(String mobile, String password, JdAppUser user);

    /**
     * 验证码登录APP
     *
     * @param mobile     手机号
     * @param verifyCode 验证码
     * @param user       用户信息
     * @return 登录信息
     */
    LoginInfo codeLogin(String mobile, String verifyCode, JdAppUser user);

    /**
     * 微信登录
     *
     * @param user       用户信息
     * @param wxUnionId  微信id
     * @param qqUnionId  qqId
     * @param appleId    appleId
     * @param wxHeadImg  头像
     * @param wxUsername 用户名
     * @return 登录信息
     */
    LoginInfo wxLogin(JdAppUser user, String wxUnionId, String qqUnionId, String appleId, String wxHeadImg, String wxUsername);

    /**
     * 用户注册
     *
     * @param mobile      手机号
     * @param deviceModel 系统
     * @param mobileModel 机型
     * @param appVersion  APP版本
     * @param password    密码
     * @param userName    用户名 注册默认手机号
     * @return 登录信息
     */
    LoginInfo register(String mobile, String deviceModel, String mobileModel, String appVersion, String password, String userName);

    /**
     * 修改密码
     *
     * @param userId 用户id
     * @param pwd    密码
     */
    void editPwd(Integer userId, String pwd);

    /**
     * 合并账号
     *
     * @param registerUser 微信/QQ 注册用户
     * @param originUser   手机号 注册用户
     * @param type         2、微信 1、qq
     * @return 登录信息
     */
    LoginInfo mergeUser(JdAppUser registerUser, JdAppUser originUser, int type);

    /**
     * 注销用户
     *
     * @param user 用户信息
     */
    void userCancel(JdAppUser user);

    /**
     * @return userNum
     */
    String getUserNum();

    /**
     * 校验用户是否注册，未注册则自动注册
     * 账号密码均为 手机号
     */
    void checkMobileUser(List<CheckMobileUserVo> voList);

    /**
     * 根据用户id或者手机号获取用户
     *
     * @param mobile userNum/mobile
     * @return user
     */
    JdAppUser getJdAppUser(String mobile);

    /**
     * 新增用户身份
     *
     * @param userId 用户id
     */
    void insertRole(Integer userId);

    /**
     * 获取用户登录信息
     *
     * @param userId 用户id
     * @return loginInfo
     */
    LoginInfo getLoginInfo(Integer userId);

    JdAppUser getAppUserByToken(String token);
}
